﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Sisco.AplicacionEscritorio.Problema.Problema.ControlUsuario;
using Sisco.AplicacionEscritorio.Util;

namespace Sisco.AplicacionEscritorio.Problema
{
    public partial class RegistroProblema : Form
    {
        private AccesoDatos.USUARIO usuarioSistema;

        public RegistroProblema()
        {
            InitializeComponent();
        }

        public RegistroProblema(AccesoDatos.USUARIO usuariosistema) : this()
        {
            usuarioSistema = usuariosistema;
        }

        private void LimpiarFormulario()
        {
            cmbTipoProblema.SelectedIndex = -1;
            txtUsuarioNombre.ResetText();
            txtUsuarioNombre.Tag = null;
            gridEquipos.DataSource = null;
            cmbAsistenteReparador.SelectedIndex = -1;
            cmbPrioridad.SelectedIndex = -1;
            cmbPrograma.DataSource = null;
            cmbCasoProblema.DataSource = null;
            txtProblema.ResetText();
            txtObservaciones.ResetText();
        }

        private void RegistroProblema_Load(object sender, EventArgs e)
        {
            ListarTipoProblema();
            ListarAsistenteReparador();
        }

        private void ListarAsistenteReparador()
        {
            LogicaNegocio.UsuarioBLL usuarioBLL = new LogicaNegocio.UsuarioBLL();
            cmbAsistenteReparador.DataSource = usuarioBLL.ListarAsistenteReparador();
            cmbAsistenteReparador.ValueMember = "ID";
            cmbAsistenteReparador.DisplayMember = "NOMBRECOMPLETO";
            cmbAsistenteReparador.SelectedIndex = -1;
        }

        private void ListarTipoProblema()
        {
            LogicaNegocio.TipoProblemaBLL tipoProblemaBLL = new LogicaNegocio.TipoProblemaBLL();
            cmbTipoProblema.DataSource = tipoProblemaBLL.Listar();
            cmbTipoProblema.ValueMember = "ID";
            cmbTipoProblema.DisplayMember = "TIPO_PROBLEMA";
            cmbTipoProblema.SelectedIndex = -1;
        }

        private void cmbTipoProblema_SelectionChangeCommitted(object sender, EventArgs e)
        {
            if (cmbTipoProblema.SelectedIndex >= 0)
            {
                AccesoDatos.PROBLEMA_TIPO selectedTipoProblema = cmbTipoProblema.SelectedItem as AccesoDatos.PROBLEMA_TIPO;

                if (selectedTipoProblema.TIPO_PROBLEMA.Equals("hardware", StringComparison.CurrentCultureIgnoreCase))
                {
                    setFormularioProblema("hardware");
                }
                else if (selectedTipoProblema.TIPO_PROBLEMA.Equals("software", StringComparison.CurrentCultureIgnoreCase))
                {
                    setFormularioProblema("software");
                }
                else if (selectedTipoProblema.TIPO_PROBLEMA.Equals("otros", StringComparison.CurrentCultureIgnoreCase))
                {
                    setFormularioProblema("otros");
                }

                if (txtUsuarioNombre.Tag != null)
                {
                    int idSelectedUsuario = int.Parse(txtUsuarioNombre.Tag.ToString());

                    LogicaNegocio.EquipoBLL equipoBLL = new LogicaNegocio.EquipoBLL();
                    List<AccesoDatos.EQUIPO> listaEquipos = equipoBLL.ListarEquipo(new AccesoDatos.USUARIO() { ID = idSelectedUsuario });

                    if (listaEquipos.Count > 0)
                    {
                        if (selectedTipoProblema.TIPO_PROBLEMA.Equals("hardware", StringComparison.CurrentCultureIgnoreCase))
                        {
                            gridEquipos.DataSource = null;
                            gridEquipos.DataSource = listaEquipos;
                            gridEquipos.ClearSelection();
                        }
                        else if (selectedTipoProblema.TIPO_PROBLEMA.Equals("software", StringComparison.CurrentCultureIgnoreCase))
                        {
                            listaEquipos = equipoBLL.ListarEquiposconProgramas(new AccesoDatos.USUARIO() { ID = idSelectedUsuario });

                            if (listaEquipos.Count > 0)
                            {
                                gridEquipos.DataSource = null;
                                gridEquipos.DataSource = listaEquipos;
                                gridEquipos.ClearSelection();
                            }
                            else
                            {
                                DialogResult respuesta = MessageBox.Show(this.Parent, "El usuario no tiene asignado equipos que tengan instalados programas.\nDe otra forma, el problema sera registrado como tipo 'Otros'.\n¿Desea continuar?", "Sisco", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);

                                if (respuesta == DialogResult.Yes)
                                {
                                    //se establece el problema como tipo Otros
                                    cmbTipoProblema.SelectedIndex = cmbTipoProblema.Items.IndexOf(cmbTipoProblema.Items.Cast<AccesoDatos.PROBLEMA_TIPO>().SingleOrDefault(x => x.TIPO_PROBLEMA.Equals("otros", StringComparison.CurrentCultureIgnoreCase)));
                                    setFormularioProblema("otros");
                                }
                                else
                                {
                                    //cierra el formulario
                                    this.ParentForm.Close();
                                }
                            }
                        }

                        txtRegistradoPor.Text = usuarioSistema.NOMBRECOMPLETO != null ? usuarioSistema.NOMBRECOMPLETO.Trim() : string.Empty;
                        cmbAsistenteReparador.SelectedIndex = cmbAsistenteReparador.Items.Count > 0 ? cmbAsistenteReparador.Items.IndexOf(cmbAsistenteReparador.Items.Cast<AccesoDatos.USUARIO>().SingleOrDefault(x => x.ID.Equals(usuarioSistema.ID))) : -1;
                    }
                    else
                    {
                        DialogResult respuesta = MessageBox.Show(this.Parent, "El usuario no tiene asignado equipos.\nDe otra forma, el problema sera registrado como tipo 'Otros'.\n¿Desea continuar?", "Sisco", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);

                        if (respuesta == DialogResult.Yes)
                        {
                            //se establece el problema como tipo Otros
                            cmbTipoProblema.SelectedIndex = cmbTipoProblema.Items.IndexOf(cmbTipoProblema.Items.Cast<AccesoDatos.PROBLEMA_TIPO>().SingleOrDefault(x => x.TIPO_PROBLEMA.Equals("otros", StringComparison.CurrentCultureIgnoreCase)));
                            setFormularioProblema("otros");
                        }
                        else
                        {
                            //cierra el formulario
                            this.ParentForm.Close();
                        }
                    }                 
                }
            }
        }

        private void setFormularioProblema(string tipoProblema)
        {
            LogicaNegocio.CasoProblemaBLL casoproblemaBLL;
            
            switch (tipoProblema)
            {
                case "hardware":
                    cmbPrograma.Enabled = false;
                    cmbPrograma.Visible = false;
                    lblPrograma.Visible = false;

                    cmbCasoProblema.Enabled = true;

                    casoproblemaBLL = new LogicaNegocio.CasoProblemaBLL();
                    cmbCasoProblema.DataSource = casoproblemaBLL.ListarCasoHardware();
                    cmbCasoProblema.ValueMember = "ID";
                    cmbCasoProblema.DisplayMember = "descripcion";
                    cmbCasoProblema.SelectedIndex = -1;
                    break;
                case "software":
                    cmbPrograma.Enabled = true;
                    cmbPrograma.Visible = true;
                    lblPrograma.Visible = true;

                    cmbCasoProblema.Enabled = true;

                    casoproblemaBLL = new LogicaNegocio.CasoProblemaBLL();
                    cmbCasoProblema.DataSource = casoproblemaBLL.ListarCasoSoftware();
                    cmbCasoProblema.ValueMember = "ID";
                    cmbCasoProblema.DisplayMember = "descripcion";
                    cmbCasoProblema.SelectedIndex = -1;
                    break;
                case "otros":
                    cmbPrograma.Enabled = false;
                    cmbPrograma.Visible = false;
                    lblPrograma.Visible = false;

                    cmbCasoProblema.Enabled = false;
                    gridEquipos.DataSource = null;
                    break;
            }
        }

        private void btnBuscarUsuario_Click(object sender, EventArgs e)
        {
            if (cmbTipoProblema.SelectedIndex >= 0)
            {
                FormularioBuscar cuadroBuscar = new FormularioBuscar("Usuario");
                cuadroBuscar.ShowDialog(this);

                AccesoDatos.USUARIO selectedUsuario = cuadroBuscar.ObjetoBuscado as AccesoDatos.USUARIO;

                if (selectedUsuario != null)
                {
                    txtUsuarioNombre.Text = selectedUsuario.NOMBRECOMPLETO;
                    txtUsuarioNombre.Tag = selectedUsuario.ID;

                    LogicaNegocio.EquipoBLL equipoBLL = new LogicaNegocio.EquipoBLL();
                    List<AccesoDatos.EQUIPO> listaEquipos;

                    AccesoDatos.PROBLEMA_TIPO selectedTipoProblema = cmbTipoProblema.SelectedItem as AccesoDatos.PROBLEMA_TIPO;

                    listaEquipos = equipoBLL.ListarEquipo(selectedUsuario);

                    if (listaEquipos.Count > 0)
                    {
                        if (selectedTipoProblema.TIPO_PROBLEMA.Equals("hardware", StringComparison.CurrentCultureIgnoreCase))
                        {
                            gridEquipos.DataSource = null;
                            gridEquipos.DataSource = listaEquipos;
                            gridEquipos.ClearSelection();
                        }
                        else if (selectedTipoProblema.TIPO_PROBLEMA.Equals("software", StringComparison.CurrentCultureIgnoreCase))
                        {
                            listaEquipos = equipoBLL.ListarEquiposconProgramas(selectedUsuario);

                            if(listaEquipos.Count > 0)
                            {
                                gridEquipos.DataSource = null;
                                gridEquipos.DataSource = listaEquipos;
                                gridEquipos.ClearSelection();
                            }
                            else
                            {
                                DialogResult respuesta = MessageBox.Show(this.Parent, "El usuario no tiene asignado equipos que tengan instalados programas.\nDe otra forma, el problema sera registrado como tipo 'Otros'.\n¿Desea continuar?", "Sisco", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);

                                if (respuesta == DialogResult.Yes)
                                {
                                    //se establece el problema como tipo Otros
                                    cmbTipoProblema.SelectedIndex = cmbTipoProblema.Items.IndexOf(cmbTipoProblema.Items.Cast<AccesoDatos.PROBLEMA_TIPO>().SingleOrDefault(x => x.TIPO_PROBLEMA.Equals("otros",StringComparison.CurrentCultureIgnoreCase)));
                                    setFormularioProblema("otros");
                                }
                                else
                                {
                                    //cierra el formulario
                                    this.Close();
                                }
                            }                            
                        }

                        txtRegistradoPor.Text = usuarioSistema.NOMBRECOMPLETO != null ? usuarioSistema.NOMBRECOMPLETO.Trim() : string.Empty;
                        cmbAsistenteReparador.SelectedIndex = cmbAsistenteReparador.Items.Count > 0 ? cmbAsistenteReparador.Items.IndexOf(cmbAsistenteReparador.Items.Cast<AccesoDatos.USUARIO>().SingleOrDefault(x => x.ID.Equals(usuarioSistema.ID))) : -1;
                    }
                    else
                    {
                        DialogResult respuesta = MessageBox.Show(this.Parent, "El usuario no tiene asignado equipos.\nDe otra forma, el problema sera registrado como tipo 'Otros'.\n¿Desea continuar?", "Sisco", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);

                        if(respuesta == DialogResult.Yes)
                        {
                            //se establece el problema como tipo Otros
                            cmbTipoProblema.SelectedIndex = cmbTipoProblema.Items.IndexOf(cmbTipoProblema.Items.Cast<AccesoDatos.PROBLEMA_TIPO>().SingleOrDefault(x => x.TIPO_PROBLEMA.Equals("otros", StringComparison.CurrentCultureIgnoreCase)));
                            setFormularioProblema("otros");

                            txtRegistradoPor.Text = usuarioSistema.NOMBRECOMPLETO != null ? usuarioSistema.NOMBRECOMPLETO.Trim() : string.Empty;
                            cmbAsistenteReparador.SelectedIndex = cmbAsistenteReparador.Items.Count > 0 ? cmbAsistenteReparador.Items.IndexOf(cmbAsistenteReparador.Items.Cast<AccesoDatos.USUARIO>().SingleOrDefault(x => x.ID.Equals(usuarioSistema.ID))) : -1;
                        }
                        else
                        {
                            //cierra el formulario
                            this.Close();
                        }
                    }                 
                }
            }
            else
            {
                MessageBox.Show("Primero seleccione el tipo de problema a registrar", "Sisco", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }
        }

        private void gridEquipos_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridEquipos.DataSource != null)
            {
                gridEquipos.Columns["ID"].Visible = false;
                gridEquipos.Columns["IDUSUARIO"].Visible = false;
                gridEquipos.Columns["IDEQUIPO"].Visible = false;
                gridEquipos.Columns["IDTIPOEQUIPO"].Visible = false;
                gridEquipos.Columns["TIPOEQUIPO"].Visible = false;
                gridEquipos.Columns["IDESTADO"].Visible = false;
                gridEquipos.Columns["MARCA"].HeaderText = "Marca";
                gridEquipos.Columns["MODELO"].HeaderText = "Modelo";
                gridEquipos.Columns["MODELO"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                gridEquipos.Columns["SERIE"].HeaderText = "Serie";
                gridEquipos.Columns["SERIE"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                gridEquipos.Columns["ELIMINADO"].Visible = false;
                gridEquipos.Columns["IDUSUARIOANTIGUO"].Visible = false;
                gridEquipos.Columns["ASIGNADO"].Visible = false;
                gridEquipos.Columns["FECHAREGISTRO"].Visible = false;
                gridEquipos.Columns["NOMBEQUIPO"].Visible = false;
                gridEquipos.Columns["FECHAMODIFICACION"].Visible = false;
                gridEquipos.Columns["TIPOEQUIPO1"].HeaderText = "Equipo";
                gridEquipos.Columns["TIPOEQUIPO1"].DisplayIndex = 0;
                gridEquipos.Columns["TIPOEQUIPO1"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                gridEquipos.Columns["RELACION_EQUI_PROG"].Visible = false;
                gridEquipos.Columns["USUARIO"].Visible = false;
                gridEquipos.Columns["MOVIMIENTO"].Visible = false;
                gridEquipos.Columns["EQUIPO_ESTADO"].Visible = false;
            }
        }

        private void gridEquipos_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (gridEquipos.Columns[e.ColumnIndex].Name == "TIPOEQUIPO1")
            {
                AccesoDatos.TIPOEQUIPO tipoEquipo = e.Value as AccesoDatos.TIPOEQUIPO;

                if (tipoEquipo != null)
                {
                    e.Value = tipoEquipo.NOMBRETIPO.Trim();
                }
            }
        }

        private void gridEquipos_SelectionChanged(object sender, EventArgs e)
        {
            if (cmbTipoProblema.SelectedIndex >= 0)
            {
                AccesoDatos.PROBLEMA_TIPO selectedProblemaTipo = cmbTipoProblema.SelectedItem as AccesoDatos.PROBLEMA_TIPO;

                if (selectedProblemaTipo != null)
                {
                    if (selectedProblemaTipo.TIPO_PROBLEMA.Equals("software",StringComparison.CurrentCultureIgnoreCase))
                    {
                        if (gridEquipos.SelectedRows.Count > 0)
                        {
                            AccesoDatos.EQUIPO selectedEquipo = gridEquipos.SelectedRows[0].DataBoundItem as AccesoDatos.EQUIPO;

                            LogicaNegocio.EquipoProgramaBLL equipoProgramaBLL = new LogicaNegocio.EquipoProgramaBLL();
                            cmbPrograma.DataSource = equipoProgramaBLL.ListarProgramas(selectedEquipo);
                            cmbPrograma.ValueMember = "ID";
                            cmbPrograma.DisplayMember = "NOMBREPROGRAMA";
                            cmbPrograma.SelectedIndex = -1;
                        }
                    }  
                }
            }
        }

        private void btnRegistrar_Click(object sender, EventArgs e)
        {
            bool correcto = false;            
            AccesoDatos.PROBLEMA_TIPO selectedTipoProblema; 

            //verificamos el tipo de problema
            if (cmbTipoProblema.SelectedIndex >= 0)
            {
                if (txtUsuarioNombre.Tag != null)
                {
                    if (!string.IsNullOrWhiteSpace(txtRegistradoPor.Text))
                    {
                        if (cmbAsistenteReparador.SelectedIndex >= 0)
                        {
                            if (!string.IsNullOrWhiteSpace(txtProblema.Text))
                            {
                                selectedTipoProblema = cmbTipoProblema.SelectedItem as AccesoDatos.PROBLEMA_TIPO;

                                if (selectedTipoProblema != null)
                                {
                                    if (selectedTipoProblema.TIPO_PROBLEMA.Equals("hardware", StringComparison.CurrentCultureIgnoreCase))
                                    {
                                        if (gridEquipos.SelectedRows.Count > 0)
                                        {
                                            if (cmbCasoProblema.SelectedIndex >= 0)
                                            {
                                                correcto = true;
                                            }
                                            else
                                            {
                                                MessageBox.Show("Seleccione el caso del problema", "Sisco", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                                            }
                                        }
                                        else
                                        {
                                            MessageBox.Show("Seleccione el equipo", "Sisco", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                                        }
                                    }
                                    else if (selectedTipoProblema.TIPO_PROBLEMA.Equals("software", StringComparison.CurrentCultureIgnoreCase))
                                    {
                                        if (gridEquipos.SelectedRows.Count > 0)
                                        {
                                            if (cmbPrograma.SelectedIndex >= 0)
                                            {
                                                if (cmbCasoProblema.SelectedIndex >= 0)
                                                {
                                                    correcto = true;
                                                }
                                                else
                                                {
                                                    MessageBox.Show("Seleccione el caso del problema", "Sisco", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                                                }
                                            }
                                            else
                                            {
                                                MessageBox.Show("Seleccione el programa", "Sisco", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                                            }
                                        }
                                        else
                                        {
                                            MessageBox.Show("Seleccione el equipo", "Sisco", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                                        }
                                    }
                                    else if (selectedTipoProblema.TIPO_PROBLEMA.Equals("otros", StringComparison.CurrentCultureIgnoreCase))
                                    {
                                        correcto = true;
                                    }                                                                        
                                }
                            }
                            else
                            {
                                MessageBox.Show("Ingrese la descripción del problema", "Sisco", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                            }
                        }
                        else
                        {
                            MessageBox.Show("Seleccione el Asistente/Reparador", "Sisco", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                        }
                    }
                    else
                    {
                        MessageBox.Show("el usuario que registra el problema no se encuentra indicado. Consultar con el Administrador", "Sisco", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                    }
                }
                else
                {
                    MessageBox.Show("Seleccione el usuario", "Sisco", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                }
            }
            else
            {
                MessageBox.Show("Seleccione el tipo de problema", "Sisco", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }

            if (correcto)
            {
                LogicaNegocio.TipoProblemaBLL tipoProblemaBLL = new LogicaNegocio.TipoProblemaBLL();

                selectedTipoProblema = cmbTipoProblema.SelectedItem as AccesoDatos.PROBLEMA_TIPO;

                if (selectedTipoProblema != null)
                {
                    AccesoDatos.PROBLEMA nuevoProblema = new AccesoDatos.PROBLEMA();
                    
                    if (selectedTipoProblema.TIPO_PROBLEMA.Equals("hardware", StringComparison.CurrentCultureIgnoreCase) ||
                        selectedTipoProblema.TIPO_PROBLEMA.Equals("software", StringComparison.CurrentCultureIgnoreCase))
                    {
                        //registramos el detalle del problema
                        AccesoDatos.EQUIPO selEquipo = gridEquipos.SelectedRows[0].DataBoundItem as AccesoDatos.EQUIPO;

                        AccesoDatos.PROBLEMA_DETALLE nuevoPDetalle = new AccesoDatos.PROBLEMA_DETALLE()
                        {
                            IDEQUIPO = selEquipo.ID,
                            TIPOEQUIPO = selEquipo.TIPOEQUIPO1.NOMBRETIPO,
                            MODELO = selEquipo.MODELO,
                            SERIE = selEquipo.SERIE,
                            IDPROGRAMA = cmbPrograma.Enabled ? int.Parse(cmbPrograma.SelectedValue.ToString()) : new Nullable<int>(),
                            NOMBREPROGRAMA = cmbPrograma.Enabled ? (cmbPrograma.SelectedItem as AccesoDatos.PROGRAMA).NOMBREPROGRAMA.Trim() : string.Empty,
                        };

                        nuevoProblema.PROBLEMA_DETALLE.Add(nuevoPDetalle);
                    }

                    //se registra el problema
                    nuevoProblema = new AccesoDatos.PROBLEMA()
                    {
                        IDUSUARIO = int.Parse(txtUsuarioNombre.Tag.ToString()),
                        IDCASO = cmbCasoProblema.SelectedItem != null ? int.Parse(cmbCasoProblema.SelectedValue.ToString()) : new Nullable<int>(),
                        IDREPARADOR = int.Parse(cmbAsistenteReparador.SelectedValue.ToString()),
                        IDTIPOPROBLEMA = selectedTipoProblema.ID,
                        DESCRIPCION = txtProblema.Text.Trim(),
                        DESCRIPCIONOBSERVACION = txtObservaciones.Text.Trim(),
                        FECHAREGISTROPROBLEMA = DateTime.Now,
                        REGISTRADOPOR = usuarioSistema.NOMBRECOMPLETO != null ? usuarioSistema.NOMBRECOMPLETO.Trim() : string.Empty,
                        ESTADO = "Pendiente",
                        NOMBREREPARADOR = cmbAsistenteReparador.SelectedText.Trim(),
                        PRIORIDAD = cmbPrioridad.SelectedItem != null ? cmbPrioridad.SelectedItem.ToString() == "Baja" ? 3 : cmbPrioridad.SelectedItem.ToString() == "Media" ? 2 : cmbPrioridad.SelectedItem.ToString() == "Alta" ? 1 : new Nullable<int>() : new Nullable<int>(),
                        ELIMINADO = 0
                    };
                    
                    LogicaNegocio.ProblemaBLL problemaBLL = new LogicaNegocio.ProblemaBLL();
                    problemaBLL.Registrar(nuevoProblema);

                    DialogResult result = MessageBox.Show("Problema registrado.\n¿Desea registrar otro problema?", "Sisco", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);

                    if (result == DialogResult.Yes)
                    {
                        this.LimpiarFormulario();
                    }
                    else
                    {
                        this.Close();
                    }
                }
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
